VScode中用jdk命令,将普通工程生成jar包 您所在的位置:网站首页 vs code maven打jar包 VScode中用jdk命令,将普通工程生成jar包

VScode中用jdk命令,将普通工程生成jar包

2024-01-31 02:42| 来源: 网络整理| 查看: 265

文章目录 用jdk命令打包带有main函数(单个类)带有main函数(涉及多个类)类库打包和调用(单个类) 使用maven打包

用jdk命令打包

项目中不会这么去打包,只是为了学习和理解。

带有main函数(单个类)

main函数:

public class Hello { public static void main(final String[] args) { System.out.println("hello"); } }

终端通过:javac Hello.java生成Hello.class文件。

项目结构:

编译成字节码Hello.java已省略步骤。

将Hello.class文件打成jar包:

PS C:\AAAAAProj\VSCODE\Study_Java\src> jar -cvf my.jar Hello.class

cvf的意思可能是:create verbose files https://www.zybang.com/question/62632e26fc216e043a56492dfe77c503.html

得到: 此时运行my.jar会出错(奇怪字符):

出错原因:

java运行jar命令提示没有主清单属性: https://www.cnblogs.com/linjian/p/4785530.html

解决方法:

需要用解压缩工具(比如360压缩)打开my.jar,在里面添加“主类”的名称:

META-INF文件详解: https://blog.csdn.net/weixin_42248302/article/details/100886727

编辑后保存,并替换到原my.jar中。

此时再执行运行的命令:java -jar my.jar

正常结果:

带有main函数(涉及多个类)

初始结构:

demo.entry.Hello.java(注意package):

package demo.entry; import demo.tool.Person; public class Hello { public static void main(String[] args) { Person person = new Person(); person.say(); } }

demo.tool.Person.java:

package demo.tool; public class Person { public void say(){ System.out.println("Hello, I am a boy."); } }

编译成字节码:

直接编译有main函数的那个类,会自动编译其引用的Person类:

PS G:\AAWorkbench\VSCODE\Study_Java> javac ./demo/entry/Hello.java

得到: 把demo文件夹打成jar包(可以把里面的java文件删除,只保留class文件):

PS G:\AAWorkbench\VSCODE\Study_Java> jar -cvf d.jar demo

在demo同目录中产生一个d.jar文件,同样地用360压缩,修改里面的MANIFEST.MF文件(注意Hello前面要加包名):

在d.jar中,class文件是按照包名有序排放在目录中的:

运行:

PS G:\AAWorkbench\VSCODE\Study_Java> java -jar d.jar

类库打包和调用(单个类)

将上面中的demo.tool.Person生成一个jar包,供Hello调用。

将demo.entry.Hello移除,仅剩下demo.tool.Person,将其打包:

PS G:\AAWorkbench\VSCODE\Study_Java> jar -cvf demotool.jar demo

在新的工程中调用demotool.jar,并成功运行:

import demo.tool.Person; public class Hello { public static void main(String[] args) { Person person = new Person(); person.say(); } } 使用maven打包

前面使用jdk打jar包时,需要手动用解压缩工具,在MANIFEST.MF中添加Main-Class。

而使用maven打包则更简便。

后续会用maven试一下。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有